// axios 公共配置

// 基地址
axios.defaults.baseURL = 'https://geek.itheima.net';

// auth.js ==> 2.1 在 utils/request.js 设置请求拦截器，统一携带 token
// axios 请求拦截器  ==> 第一个函数体作用：在发送请求之前做些什么   第二个函数体作用：对请求错误做些什么
axios.interceptors.request.use(function (config) {
  // 在发送请求时,如果有 token 值,就将 token 值携带到请求头中一起发送到服务器
  const token = localStorage.getItem('token');
  token && (config.headers.Authorization = `Bearer ${token}`);
  return config;
}, function (error) {
  return Promise.reject(error);
});


// axios 响应拦截器 ===> 作用：在服务器响应结果给请求方之前所处理的事情
// 第一个函数体：响应成功所处理的事情  ===> 状态码 2xx 开头的都会触发此函数体
// 第二个函数体：响应失败所处理的事情  ===> 状态码非 2xx 开头的都会触发此函数体
axios.interceptors.response.use(function (response) {
  // 直接返回服务器响应的结果对象
  return response.data;
}, function (error) {
  if(error?.response?.status === 401){
    alert('身份验证失败，请重新登录');
    localStorage.clear();
    location.href = '../login/index.html';
  }
  console.dir(error);
  return Promise.reject(error);
});